// 交互逻辑代码 JS
var seckill = {
	// 封装url
	URL: {
		now: function() {
			return '/seckill/time/now';
		},
		exposer: function(seckillId) {
			return '/seckill/' + seckillId + '/exposer';
		},
		execution: function(seckillId, md5) {
			return '/seckill/' + seckillId + '/' + md5 + '/execution';
		}
	},
	// 秒杀逻辑
	handlerKill: function(seckillId, node) {
		node.hide().html('<button class="btn btn-primary btn-lg" id="killBtn">开始秒杀</button>');
		$.post(seckill.URL.exposer(seckillId), {

		}, function(json) {
			if (json && json.success) {
				var exposerObj = json.data;
				if (exposerObj.exposed) {
					// 开启秒杀 只绑定一次事件
					$("#killBtn").one('click', function() {
						// 执行秒杀请求
						// 1.禁用按钮
						$(this).addClass('disabled');
						// 2.发送秒杀请求,执行秒杀
						$.post(seckill.URL.execution(seckillId, exposerObj.md5), {

						}, function(json) {
							if (json && json.success) {
								var result = json.data;
								var state = result.state;
								var stateInfo = result.stateInfo;
								// 显示秒杀结果
								node.html('<span class="label label-success">' + stateInfo + '</span>');
							}
						});
					});
				} else {
					// 未开启秒杀
					var nowTime = exposerObj.now;
					var startTime = exposerObj.start;
					var endTime = exposerObj.end;
					// 从新计算时间
					seckill.countdown(seckillId, nowTime, startTime, endTime);
				}
			} else {
				console.log(json);
			}
		});
		node.show();
	},
	// 计时交互
	countdown: function(seckillId, nowTime, startTime, endTime) {
		var seckillBox = $("#seckill-box");
		// 时间判断
		if (nowTime > endTime) {
			// 秒杀结束
			seckillBox.html('秒杀结束');
		} else if (nowTime < startTime) {
			// 秒杀未开始, 计时
			var killTime = new Date(startTime + 1000);
			seckillBox.countdown(killTime, function(event) {
				var format = event.strftime('秒杀计时: %D天 %H时 %M分 %S秒');
				seckillBox.html(format);
			}).on('finish.countdown', function() {
				seckill.handlerKill(seckillId, seckillBox);
			});
		} else {
			seckill.handlerKill(seckillId, seckillBox);
		}
	},
	// 验证
	validPhone: function(phone) {
		if (phone && phone.length == 11 && !isNaN(phone)) {
			return true;
		} else {
			return false;
		}
	},
	// 详情页逻辑
	detail: {
		// 初始化方法
		init: function(params) {
			var phone = $.cookie('phone');

			// 登陆逻辑判断
			if (!seckill.validPhone(phone)) {
				// 需要绑定phone
				var phoneModal = $("#phoneModal");
				phoneModal.modal({
					// 展示
					show: true,
					// 位置
					backdrop: 'static',
					// 关闭按钮
					keyboard: false
				});
				
				// 输入电话判断
				$("#phoneBtn").click(function() {
					var inputPhone = $("#phoneKey").val();
					// 粗略验证电话号
					if (seckill.validPhone(inputPhone)) {
						$.cookie("phone", inputPhone, {
							// 有效时间
							expirse: 7,
							// 相当与cookies作用域， 防止服务端存在很多
							path: "/seckill"
						});
						window.location.reload();
					} else {
						$("#phoneMessage").hide().html('<label class="label label-danger">手机号有误！</label>').show(300)
					}
				});
			}

			// 计时交互
			var startTime = params['startTime'];
			var endTime = params['endTime'];
			var seckillId = params['seckillId'];
			$.get(seckill.URL.now(), {

			}, function(json) {
				if (json && json["success"]) {
					var nowTime = json.data;
					seckill.countdown(seckillId, nowTime, startTime, endTime);
				} else {
					console.log(json);
				}
			});
		}
	}
}